package com.prometheus.controller;

import io.prometheus.client.Counter;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 连续增加不会减少的计数器，可以用于记录只增不减的类型，例如：网站访问人数，系统运行时间等。
 * 对于Counter类型的指标，只包含一个inc()的方法，就是用于计数器+1.
 * 一般而言，Counter类型的metric指标在冥冥中我们使用_total结束，如http_requests_total.
 *
 * @author: Alan
 * @date: 2021/5/13 21:54
 */

@RestController
public class CounterDemo {
    /*
     *  使用Counter.build()创建Counter类型的监控指标，并且通过name()方法定义监控指标的名称network_traffic_input
     * ，通过labelNames()定义该指标包含的标签。最后通过register()将该指标注册到Collector的defaultRegistry中
     */
    public static final Counter counterDemo = Counter.build()
            .name("counterChanger2").labelNames("wy","zxjr","ocs","xxjf","unit")
            .help("Counter 实例").register();

    /**
     * 指标埋点，定时器会造成普罗米修斯与本地的数据时间戳不同步，尽量不要使用这种方式，实例中的定时器是为了数据演示
     */
    @Scheduled(cron="0/5 * * * * ?")
    @RequestMapping("/changeCounter")
    public  void changeCounter(){
        //指标值增加
        counterDemo.labels("网元","在线接入","OCS","消息计费","seconds").inc();
    }

}
